iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0

今天總算是要開始寫遊戲了,接下來會用pygame模組來完成

這是他們的官方網站,還蠻大的,就跟傑哥家一樣
https://www.pygame.org/news
裡面也有一些網友寫好的範例可以參考,只可惜這邊沒有找到三消遊戲的範例

沒辦法,那只自己來了
首先在昨天建立的虛擬環境裡,安裝pygame

pip install pygame

目前我的pygame版本號為2.1.2

接著來開始寫程式了
首先import這些套件進來

import os
import sys
from time import sleep
import pygame
import random
from threading import Thread

並且定義一些常數

WIDTH = 400
HEIGHT = 400
NUMGRID = 8
GRIDSIZE = 36
XMARGIN = (WIDTH - GRIDSIZE * NUMGRID) // 2
YMARGIN = (HEIGHT - GRIDSIZE * NUMGRID) // 2
ROOTDIR = os.getcwd()
FPS = 30

接下來先寫出Main_Application物件

class Application(Thread):
    def __init__(self):
        Thread.__init__(self)

然後建立物件

if __name__ == '__main__':
    mainApp = Application()
    mainApp.daemon = True
    mainApp.name = 'game'

    mainApp.start()

    while True:
        sleep(1)

到這邊起手勢完成了,雖然說不需要這樣分出來,但這個寫法我會比較習慣一點

接下來開始寫run,並且寫一些基礎邏輯出來

def run(self):
    # pygame的初始設定
    pygame.init()
    self.screen = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption('消消樂')
    
    while True:
        for event in pygame.event.get():
            # 不知為何絕對要有這行才跑得動
            if event.type == pygame.QUIT: sys.exit()
        
        # 填上滿滿的黃色
        self.screen.fill((255, 255, 220))
        
        # 重複刷新畫面
        pygame.display.flip()

到這邊為止,來把程式運行看看

接下來把格子給畫上去

# 遊戲介面的網格繪製
def drawGrids(self):
    for x in range(NUMGRID):
        for y in range(NUMGRID):
            rect = pygame.Rect((XMARGIN+x*GRIDSIZE, YMARGIN+y*GRIDSIZE, GRIDSIZE, GRIDSIZE))
            self.drawBlock(rect, color=(255, 165, 0), size=1)

先到這邊吧,明天再把拚圖弄出來

參考資料:
https://iter01.com/569641.html


上一篇
Day2 先來安裝一下環境
下一篇
Day4 來把拼圖弄出來
系列文
最近迷上了三消遊戲 那就來寫一個自動消珠程式吧30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言